06 · 版本记录(全库变更日志)
原页面同时存在 68.4%(13/19)与 80.0%(20/25)两个版本,且 v3.1 声称「19→24、13→18 后仍保持 68.4%」在算术上错误(18/24 = 75.0%),一并废止
06 · 版本记录(全库变更日志)
分区页:从 00 驾驶舱(投资MOC) 拆出(原 §九,v1.0 → v5.3.4 完整正文,倒序)。
驾驶舱 §九 只保留一行式版本索引(
scripts/arch_check.py检查项 6 校验其单调倒序),正文在此。返回入口:00 首页(从这里开始)
v5.3.4 技能 v1.8.0 提速与结构化(preflight / selfcheck / daily_summary / tests_gate,2026-10-02)
主题:把「慢/复杂/不稳」按监工实测基线治掉——LBMA 403 时不再白跑 4 分钟管线;SOP 线性化;测试门控治 20–30 min。
- 新增 4 个只读/非阻断脚本(见 §〇 脚本表):
preflight.py(源可用性预检 ≤30s,core_ok=false→跳过管线写占位)、selfcheck.py(moc+arch+doc_sync 单进程三合一)、daily_summary.py(≤40 行素材摘要)、tests_gate.py(内容寻址测试门控:指纹未变→只跑快类并打印「门控命中:跳过 N 类,指纹 …」;代码一变必须整类跑,禁止逐项)。 - SOP 线性化 9 步(Step 0–8):预检→数据收集→管线(或跳过→占位)→批量自检→A1 记录→素材摘要→复盘写作→登记验收→收尾;每步标时间预算与「超时即止不重试」;新增幂等快路径(同日二次运行 ≤60s 直接返回
STATUS,逃生--force)。 - 技能拆两文件:
SKILL.md(≤150 行正文)+reference.md(口径/模板/历史/成本刺客/外部资源红线,按需读);两副本(框架/技能/与/var/minis/skills/)md5 一致;正文内有链接[[框架/技能/reference]]。 - 红线未动:不改
fetch.py/paper_engine.py/portfolio.py判定逻辑;不删任何检查项;门控只允许「代码未变」时跳过;不放宽 G1/发布闸门。
v5.3.3 卡尔曼滤波研究层评估(结论:不引入)(2026-10-02)
主题:把卡尔曼滤波作为点内特征嵌进
回测/engine_v1的 L1 动量与趋势态判定做样本外证伪。纯研究层,零生产链改动。
- 一句话结论:样本外 无改善 → 不引入(拼接样本外 627 bar / ppy=52:基线夏普 0.754 → V1(level/slope) 0.790(Δ+0.037)、V2(全 4 特征) 0.778(Δ+0.025);事前门槛 Δ夏普 ≥ +0.10 未过,同向折 4/6、换手 +3.2%/−68.5% 过)。不接入
scripts/、不改portfolio.py、不产生 order/signal。 - 一等证据(三条,均为本库实测):① 三参数 MLE 在 140 次滚动重估中 100% 钉在事前下界(R=Q_l=exp(−5)、Q_s=exp(−15));② 参数漂移 max/min = 1.000、R 唯一取值数 = 1("滚动重估"退化为固定参数滤波);③ 放松边界后 nll 仍继续下降 −526.66 → −1356.81(似然无上界 ⇒ 似然退化 / 方差参数弱识别 → 边界解)。
- ⚠ 未决缺陷(下一轮候选,本轮未修码):V2 的
uncertainty闸把"近乎常量、带单调微漂移"的量去比扩张 90% 分位,在 6 折中每折都闸掉 ~80% 的 bar(且与l1_confirm_days的"无法评估不可确认"规则交互后,confirm=2 的折里该闸静默失效)→ 闸门设计有误;innovation闸则因上述退化永不触发(6 折 0/N)。故 V2 的 4/6 折 Δ夏普建立在仅约 19% 可评估样本上,不构成特征有效性的证据。 - 归档:新增
回测/kalman/(研究层,原地保留;不移动、不进复盘归档区);详见 回测/kalman/报告_卡尔曼嵌入评估_2026-10-02 | 回测/kalman/README。 - 登记:
回测/回测审核清单_backtest_pitfalls.md14 条 → 16 条(新增第 15 条「似然退化 / 方差参数弱识别 → 边界解」与第 16 条「阈值闸 / 状态闸的工程校验」;出处 = 本库实测 + ML4T §9.2 原文;对engine_v1/engine_multi/portfolio.py不适用,§二 三处自查不受影响)。 - 验收:
arch_check11/11|doc_sync_check --strictrc=0|moc_index无需更新|DocSyncTests全绿;被改既有文件仅 2 个(驾驶舱入链 + 审核清单第 15 条),其余零改动(逐文件 md5 比对留证)。
v5.3.2 全库一致性同步优化(技能 v1.7.5 + doc_sync 12/13 项 + 文档计数统一)(2026-09-27)
主题:把"文档同步"从人工习惯升级为机器校验,并消除轮次间累积的计数/版本漂移。纯文档 + 自检脚本改动,零生产链改动。
- 技能 v1.7.5(
框架/技能/duckerry-daily-review SKILL.md,两副本 md5299c88cf…):① DAILY_REVIEW SOP 新增 Step 2.7「A1 组合记录(机械)」(读latest.json.portfolio三态 ok/skipped/error +portfolio.py --emit-review;失败/跳过不得阻断复盘交付,但须如实写"未记录/原因");② 复盘十段模板 §六 固定为6.1 模拟盘→6.2 纪律自检(既有)→6.3 A1 并行组合记录(必带免责句:只验流程与纪律、非收益证据、不得据此换核心底仓、升级 A2 里程碑 = 经历过一次组合 ≥15% 回撤且没动手);③ 测试项数改实测口径(示例 80 项 / 15 类);④ 新增 「绩效数字引用口径」(年化一律 bar/ppy、索提诺须注明定义、卡玛只用perf_auditv1.1+、回测/纸面/生产口径不得互引)与 「外部资源红线」(量化策略/三分层;pysystemtrade只读禁装)。 - doc_sync 判据 11 → 13 项(
scripts/doc_sync_check.py):新增第 12 项驾驶舱技能行版本号与 md5 == 仓库 SKILL.md 实际值(现场读文件算 md5,不写死)、第 13 项数据库说明.md目录结构块的 收盘复盘/快照/盘前简报/备忘/归档 计数 == 实测;两项仅告警不阻断,各配负向测试(构造失配必须报警)。DocSyncTests5 → 10 项。 - 文档计数与状态统一:驾驶舱技能行升 v1.7.5 + 全 md5;§〇·五 两行交接待办由「待执行」改「已执行」(见 §九 v5.3.1 / v5.2.5);
数据库说明.md目录结构块 复盘计数75/8/4/1→77/11/7/1、optimization/ (19)→(32);框架/使用指南.md技能版本v1.7.0→v1.7.5、optimization(19)→(32)。 - 多资产现状统一表述:回测层
回测/engine_multi/(只读数据/、零联网)+ A1 并行虚拟记录scripts/portfolio.py(只算权重、不下单、不接账户、不写数据/paper/)—— 零生产接入。生产链paper_engine仍是单资产卫星(v5.3 卫星降权后)。升级门槛 = 经历过一次组合 ≥15% 回撤且没动手。不得把组合策略写入生产流程描述。 - 验收:
arch_check11/11|doc_sync_check --strictrc=0|moc_index无需更新|测试逐类前台全绿(80 项 / 15 类)。
v5.3.1 A1 接线与外部资源登记(2026-09-27)
主题:把 A1 并行组合记录接进发布流程,并把外部量化资源分层登记;同时用第三方实现交叉验证全库绩效指标。
- A1 接线(P0):
fetch.py新增run_portfolio(tag, no_portfolio=False),放在 paper 块之后、发布状态计算之前(已静态确认latest.json三个写盘点中后两者都在其后 → 字段必落盘)。失败永不阻断发布(同时捕获Exception与SystemExit——portfolio.advance()数据不足时正是raise SystemExit);逃生--no-portfolio/DK_SKIP_PORTFOLIO=1;结果写latest.json.portfolio,不参与 gate / publish_status。 - 口径修正(P0 附带,必要):
portfolio.advance()幂等判据由「(bar, asof) 同时相等」改为只看 bar——旧判据下 fetch 每日跑会在同一周内重复推进,每周往台账塞多行同 bar 记录;并新增倒退 bar 守卫(数据 bar 早于已记录 bar → 拒绝推进,不得倒推历史权重)。判据必须用 bar 而非 asof:周末手工跑asof=09-27与 fetch 传target=09-25的 bar 都是 09-25,用 asof 判会把正常发布误判成倒退。 - 测试:新增
PortfolioWiringTests5 项(失败不阻断含 SystemExit / 跳过开关零副作用 / 真实接线契约 + 不写数据/paper// 倒退 bar 拒绝且不改写 state / 同 bar 不同 asof 判幂等);测试 70 → 75 项 / 14 → 15 类。原PortfolioRecordTests::test_deviation_band_blocks_mechanical_rebalance依赖旧语义(asof 前移即重新推进),已按"构造上一 bar"重写。 - harness 验证(未跑 fetch 全流程):直接调
fetch.run_portfolio('2026-09-25')→ 幂等命中,state/ledger 的 md5 与行数完全未变。静态已证字段必落盘,真跑只会推进 target、污染生产状态。 - 绩效审计(P1①):新建
回测/perf_audit/。实测pip与apk add均不通(apk 仅有本地索引缓存;apk add py3-seaborn84 包全部连接失败,事后复核版本未变、无残留)→ 改用 no-op 替身(sns_stub.py)顶替 seaborn/yfinance/tabulate,quantstats 0.0.85 真实源码跑通。结论:波动率/最大回撤 28 项全部 PASS、夏普全部 PASS;索提诺是唯一实质差异(quantstats 用负收益 RMS ÷ 总观测数,我方用x[x<0].std());年化口径——quantstats.stats.cagr用years = returns.count()/periods,与 engine_v1 同源(差 0.08% =round(4)),而 engine_multi 的日历跨度差 0.36% → 拍板年化一律以bar 数 / ppy为准。 - 外部资源登记(P1②):数据库说明 新增 §〇·五·二,登记
/var/minis/mounts/量化策略/9 个仓库的可调用 / 只读 / 禁装三分层;pysystemtrade钉死pandas==2.1.3(现役 2.2.3)→ 只读禁装,是唯一会造成实际损害的红线。文件完整性体检:2093 个.pyAST 全通过,无损坏文件。 - 验收:
arch_check11/11|doc_sync_check --strictrc=0|moc_index无需更新|测试逐类前台全绿。 - 监工独立复核(2026-09-27):以监工身份不采信转述逐项复验——md5 差集、
except (Exception, SystemExit)、--asof=A["target"]、幂等 bar 判据与倒退守卫、前台逐类复跑(PortfolioRecordTests6/6、PortfolioWiringTests5/5)、生产状态零漂移(latest.jsonmtime 与portfolio_state/ledger 未变)、回测/直属仍 9、入链落在本段(非 optimization 段)——全部一致。另用自写独立脚本复算D-L0L2VT日频四项指标,与审计 CSV 逐位吻合。 - ⚠ 监工新发现并已修复(
回测/perf_auditv1.0 → v1.1):crosscheck_quantstats.py的qs.stats.calmar(r)漏传periods=ppy(默认 252)→ 所有非日频序列的 quantstats 卡玛被系统性高估(周频约 +82%、月频约 +98%;日频不受影响,D-L0L2VT 0.157 vs 0.1571)。影响面为零(卡玛本就「不作判据」,FAIL 仍为 7 项索提诺),但 v1.0 的卡玛列不可引用。已一行修复并重跑:修复后engine_v1相对差 0.08–0.16%(round(4)量化)、engine_multi/portfolio 周重建稳定 0.36%(日历跨度口径)→ 与 §四 的年化口径分歧同源、互为印证(卡玛列由"不可引用"变为"可用")。方法论:误差随252/ppy单调放大且日频不受影响 = 漏传年化期数的特征;审计必须在同一收益序列上比较两侧(序列不同会误判成公式错误)。 - 回滚点:
/var/minis/shared/backup/DUCKERRY_pre_v531_a1wire_20260927/(有 pre 快照md5_before.txt+post/+md5_after.txt+ REVERT.md);绩效审计修复另存/var/minis/shared/backup/DUCKERRY_perfaudit_fix_20260927/(pre/+ 双向 md5)。
v5.3 卫星降权 + A1 并行组合记录(2026-09-27,决策落地版)
主题:执行 决策备忘 v1.1 的三条拍板:a = A1(并行记录不下单)· b = 逆波动率/周数据/季调仓/5% 偏离带 · c = 卫星立即降权。本版只改风险限额与新增记录器,不接券商、不下单、不接真实账户。
- c 已执行(卫星降权):
scripts/paper_engine.py新增SATELLITE_CAP = 0.20(原POSITION_LIMIT = 1.0满仓)、空头名义上限SHORT_SIZE_CAP 0.5 → 0.10(同比例 ÷5)、仓位口径min(上限, 置信度) → 上限 × 置信度(保留置信度动态调仓);信号逻辑、方向判定、止损/止盈、min_hold均未改。tests同步(PaperShortReduceTests断言改为新上限);SKILL 升 v1.7.3(§模拟盘新增「v5.3 卫星降权」小节,md59c8c7fef,两副本一致)。 - a 已执行(A1 并行组合记录):新增
scripts/portfolio.py—— 只读gold_pm.json+fred_NASDAQ100.csv,按逆波动率(60 周)· 周数据 W-FRI · 季调仓 · 5% 偏离带 · 6bps 单边维护虚拟净值;落盘数据/portfolio_state.json+数据/portfolio_ledger.jsonl;--emit-review输出复盘一节。硬约束(有单测断言):绝不写数据/paper/、不生成 order/signal、不 importpaper_engine。附PortfolioRecordTests6 项(不写 paper / 逆波动率方向 / 偏离带拦截 / 幂等 / 无前视 / 复盘免责句)。 - A1 定义(用户改定):① 并行记录;② 把最坏情形具象化;③ 换腿稳健性检验。⚠ 明确写入备忘:A1 只验流程与纪律、不验统计,不得用约 60 个观测去裁决 41 年样本;升级 A2 的里程碑 = 经历过一次组合 ≥15% 回撤且没动手。
- 最坏情形(已独立复核,与用户数字一致):金+纳指逆波动率 周数据+周调仓 41 年 —— 最大回撤 −31.8%、最长水下 221 周 = 4.2 年(自 1987-10)、最差滚动 12 月 −28.1%、纳指腿 2000–2009 −82.9%;换拍板口径(季调仓)为 −32.6% / 210 周 / −28.5%。
- beta 选择警告:NDX 是"单一国家 + 高度集中于少数科技巨头",赢的三个子区间恰好都是纳指大牛市 → 这是分散 + beta 选择,不是资产类别分散。换腿检验:金+标普(2016 起)1.096 / −18.4% 仍显著优于单持黄金(0.795);金+WTI(坏腿)仅 0.459 → 效应依赖"那条腿自己得是像样的风险资产"。⚠ 仓库无长历史非权益分散腿,换腿检验只能在 2016 起跑(弱检验),建议补数据后重做
[待验证]。 - 自检:
arch_check11/11|doc_sync_check --strictrc=0|moc_index无需更新|测试PaperEngineTests5/5、PaperShortReduceTests6/6、PortfolioRecordTests6/6。 - 红线遵守:未接券商、未产生真实订单;A1 不写
数据/paper/;未动归档区与已发布复盘;未改框架/数据口径定义.md。
v5.2.5 多资产组合模块(阶段 1 · 换问题:不猜方向,只做分散)(2026-09-27)
主题:执行 阶段 1 任务书 —— 在回测层验证「分散是否真的优于择时」。本版不改动生产管线任何脚本,也未改动
回测/engine_v1/(v2.0 保持可复现)。
- 交付:新建
回测/engine_multi/(使用说明):multiasset_backtest.py(约 1000 行,零联网只读数据/)+plot_multi.py+curves_compare.png;五张表tables/{A_全样本, B_子区间, B2_子区间_对齐口径, C_同风险对比, D_再平衡x成本矩阵, E_分段相关系数}.csv+守卫日志.json;净值曲线curves/*.csv。 - 方法:等权 1/N | 逆波动率(60 bar)| 风险平价 ERC(手写对数空间阻尼不动点,不引
PyPortfolioOpt/Riskfolio-Lib,遵守"武器库只作参考、不 import"红线)| 1/N 同波动缩放。全部零参数,不预测方向。 - 架构要点:① 数据频率与再平衡频率拆成两个独立参数(
--freq/--rebal);② 无前视(t 收盘定权重 → t+1 生效)+ 段内权重自然漂移;③ 成本 6bps 单边按换手计;④ 年化期数随频率推断(不硬编码 252);⑤ WTI 2020-04-20 = −36.98 非正价格守卫 +|单期收益|>60%守卫,逐条记录于守卫日志.json(实测仅 1 条触发);⑥ 黄金 5405(2026-01-29)经 sanity check 判定为真实行情,不剔除。 - 核心结果:金+纳指 风险平价 41 年 夏普 0.856 / 回撤 −31.8% / 卡玛 0.333(复现交接件 §2.4 的 0.88 / −33% / 0.33;
--task align日频零成本口径为 0.896 / −33.04% / 0.344);加入 WTI 后组合变差(夏普 0.856 → 0.766,因 WTI 自身年化 3.31% / 回撤 −93.9% / 卡玛 0.035)→ 资产池不是越大越好;ERC ≈ 逆波动率 > 等权(三资产池 0.766 / 0.735 / 0.661);2000–2009 是唯一"分散失效"的十年(ERC 0.676 < 黄金 0.809,与交接件一致)。 - 表 4 矩阵(数据频率 × 调仓频率 × 成本):成本影响很小(6bps vs 零成本夏普差 0.005–0.017);跨频率看"少动占优" —— 两池最优都在月数据 + 季调仓(ERC 0.907 / 0.854),日数据 + 日调仓最差(0.883 / 0.761)。"越勤越好"是错的。
- v1.1 口径修正(用户核验后):① 表 3 原"1/N 同波动缩放"用的是逐 bar 时变 k(= vol targeting 择时叠加)而非纯归一化 → 拆成「1/N 纯缩放(常数 k,夏普尺度不变 = 0.832)」与「1/N + 波动率目标(时变 k,标注择时叠加)」两行,结论修正为:纯配置对比下 ERC 0.855 > 1/N 0.832;② 表 4 原全部用日频数据、与表 A/C 不同口径 → 升级为「数据频率 × 调仓频率」二维并实测核对"周数据/周调仓"行与表 A/C 逐位一致(g2 等权 0.8317/11.43%/14.19%/−52.14%/0.2192);③ 修「恒定配比 1/N」硬编码 1/3 导致四资产池敞口 1.333 的 bug(改为 1/n,现恒 1.000);④ 「恒定配比 60/40」拆为「初始 60/40·不再平衡」(波动 21.75% / 回撤 −79.5%)与「恒定配比 60/40·每周再平衡」(13.35% / −42.6%)。
- 表 E 分段相关:黄金–纳指全样本 −0.008,但分段为 −0.037 / −0.060 / −0.009 / +0.140(2020–2026 转正);2008 危机时 −0.151 → "全样本平均相关系数"会系统性高估分散度。
- 数据保真度警告(已写入 README §五 与所有表脚注):WTI = 现货价非期货收益(未计展期 → 高估原油腿
[待验证]);NDX/SPX = 价格指数不含股息(低估股票腿约 1%/年 → 低估分散收益);黄金 = LBMA 定盘价。 - 验证:对接交接件 §2.4 复现通过(Δ夏普 +0.016 < 0.05,单资产交叉核对亦一致);ERC 求解器与
scipy.optimize逐位一致;两资产时 逆波动率 ≡ ERC(净值曲线 md5 相同);子区间残差已定位为滚动窗口冷/热启动(对齐口径表 B′ 已给出)。自检arch_check11/11 |doc_sync_check --strictrc=0 |moc_index无需更新。 - iSH 性能工程:滚动矩用 cumsum 全时段批量、ERC 跨时点批量迭代、净值路径全向量化(与逐 bar 循环严格等价)→ 日频×10475 次调仓的单次回测 41s → 0.2s,结果逐位一致。
- 后续决策:据本轮证据另出 决策备忘(零工程),建议先走「并行记录不下单」、配比用 1/N、卫星降权或停用;并明确不做组合层大改、不引入 ERC/HRP。
- 红线遵守:未改
scripts/任何生产脚本、未改框架/数据口径定义.md、未改动回测/engine_v1/、未动归档区与已发布复盘、未动predictions.jsonl、不接入fetch.py管线。
v5.2.4 回测引擎 v2.0 归档(2026-09-27)
主题:把四因子框架封装为独立可运行回测引擎,并按三条设计指令重构(降频 / 宏观否决权 / 核心60%+卫星40%),随后把引擎、资产曲线与结论一并入库。本版不改动生产管线任何脚本(引擎为只读消费者,只读
数据/)。
- 交付:
回测/engine_v1/(duckerry_backtest.py约 1490 行 +plot_compare.py+ 使用说明);资产曲线与回测数据一并入库(compare.csv/compare_curve.png/curves/*.csv/wf/{oos_equity.csv,oos_summary.json,fold_0..5.json}/metrics_weekly_core60.json)。完整报告 → optimization/报告/四因子框架回测引擎v2.0_报告_2026-09-27。 - 三条指令实现:①
--freq D|W|M,重采样在指标计算之前,日频阈值按 √(252/ppy) 缩放(周 ×2.20 / 月 ×4.58),年化口径随频率切换;② 宏观否决权 = L0 断路 +|收益|≥2.5σ+ 规则化非农(--veto-scope auto月频自动禁用),--veto-mode flat卫星清仓;③总仓位 = core + (1−core)×卫星,成本只对卫星换手计;新增--strategy adaptive(趋势态顺势 / 震荡态均值回归)与--l1-method trendstate(ADX + Kaufman 效率比 + Hurst)。 - 核心发现(否定式):等敞口公平对比下,三个自适应卫星变体在收益、夏普、回撤三项上全部输给"同平均敞口的被动持有"(如周频+核心60%:263.0% / 0.556 / −33.0% vs 等敞口 345.1% / 0.644 / −31.5%)→ 卫星没有 alpha。但降频明确有效:样本外夏普由日频 0.286 提升到周频 0.754,与等敞口被动的差距由 −0.236 收窄到 −0.058。事件否决的代价明确:总收益 320%→263%(−57pp),回撤仅改善 0.6pp。
- 修复的 4 个实现缺陷:月频事件否决「每月都被否 → 卫星永不交易」;年化因子硬编码 252(周/月夏普被高估 √(252/ppy) 倍);
build_event_veto每 bar 调pd.date_range(34s → 向量化);tgt = tgt * w使 int 变 float 导致格式化崩溃。 - 结论与建议:不再调参(网格择优不稳定 + 单样本 + 无多重检验校正 → 高过拟合风险),改为换问题:猜方向→管风险;单资产择时→多资产分散;手搓 regime→统计 regime;单次网格→嵌套 walk-forward + Deflated Sharpe。报告 §七 附 16 个 GitHub 参考仓库(2026-09-27 经 GitHub API 实测核实;
robcarver17/pysystemtrade已改名为pst-group/pysystemtrade)。 - 红线遵守:未改
scripts/任何生产脚本、未改框架/数据口径定义.md、未动归档区与已发布复盘、未动predictions.jsonl。引擎不接入fetch.py管线。
v5.2.3 架构风险加固(熔断/监护/一致性,4 批次,2026-09-26)
主题:执行 架构风险审计待办 v5.2.3 全部 4 批次(1×P0 + 4×P1 + 5×P2)。备份
/var/minis/shared/backup/DUCKERRY_pre_v523_20260926/(pre 全量 +post_B/post_C/post_D/快照 + 各批md5_after_*.txt)。红线遵守:未改复盘/历史原始记录/、未动归档、未删任何*.bak*、数值均来自脚本实测。
- 批次 A(P0 熔断分桶复位):
state_digest.py计数改loops_by: {"<日期>|<MODE>": N},跨日/换 mode 从 0 起算;--guard只判当前桶(输出bucket);新增--reset、DK_STATE_DIR(测试隔离)。一次性迁移loops 13 → 0(历史桶保留 +migrated_from_v171注记;原件留state/budget.json.bak_pre_v523)。根治"下一次日常任务第 3 步假熔断"。 - 批次 B(成本接线 + 台账锁逃生):
--step --cost <usd>按桶累加进cost_by,--guard按桶判定cost_est ≥ 0.5并输出cost_wired(未传--cost时恒 0.0,已在 YAML 与本文件明示,不留"看起来有保护"的状态);predict_regime_conditional.py锁改LOCK_EX|LOCK_NB+ ≤5×2s 有界重试 +--no-lock/--lock-timeout,超时打印LOCK_TIMEOUT…并 rc=0 跳过本批(实测台账 58 行零追加);09-21 遗留 0 字节predictions.lock移入数据/predictions/__obsolete__/(未删)。 - 批次 C(状态监护 + SOP 废止 + 口径对齐):
arch_check10 → 11 项(新增「state/current.md可解析」,仅告警);state_digest覆盖写前留current.md.bak、日志证据只取最后一条=== DUCKERRY … ===之后的段落(修 D-2 自相矛盾);每日发布运行提示词_2026-09-23顶部标 已废止(9/9→11/11、15 项→实测口径);技能 §1 新增「未含--guard与 11/11 口径的手写提示词一律过期」硬规则;技能升 v1.7.2(镜像 md51c27c84b),旧内嵌副本移入skills/…/scripts/legacy/(未删)。 - 批次 D(一致性 + 整洁度):
moc_index._block_text()标记缺失自愈重建(fetch.py索引分支改用该函数,消灭"索引永久停更→写入了却点不到");doc_sync_check第 8 项改扫optimization/*.md全量取最大日期并要求出现在 §九(修假绿);本文件债券腿超时口径 240s → 480s(与实际代码一致);孤儿scripts/recompute3.py移入scripts/legacy/(未删),并明确audit_evidence/与scripts/legacy/为历史证据、不作判据。 - 验收:
state_digest --guard= 本任务步数(非 13+)·break=falserc=0|arch_check11/11 ✔(md=213/出链 750/死链 0/孤儿 0)|doc_sync_check --strictrc=0|测试逐类前台全绿(StateDigest7 /ArchStateCheck3 /PredictLock4 /MocIndexHeal2 /DocSync5 /PathGuard4 /PipelineSafety10 /Paper5 /BondLeg5 /RegimeWf3 /AuxSource6 /PatternAbc4 /PaperShortReduce6 = 64 项 / 13 类)。 - 残留(诚实登记):
cost_est依赖 Agent 每步如实传--cost(属自评口径);台账锁文件运行后仍留 0 字节常驻文件(flock 语义,正常,不做 unlink 以免竞态);测试声明项数一律以grep -c "def test"实测为准。
v5.2.2 文档一致性同步 + 自检判据补盲(2026-09-26)
主题:执行 仓库文件修改建议 2026-09-26 批次 1(文档一致性):三份人工文档与
doc_sync_check.py判据同步,消除「机械全绿 ≠ 无陈旧」盲区。备份/var/minis/shared/backup/DUCKERRY_pre_docsyncfix_20260926/。
doc_sync_check.py9 → 11 项(仅告警,不阻断发布):新增第 10 项「数据库说明.md§四 统计表面板行数/交易日数/Brier ↔latest.json」、第 11 项「驾驶舱 §〇·五 复盘分组计数 ↔ §7.1/7.2(AUTO:INDEX)四类产物计数」;已做负向测试确认会报警。数据库说明.md:§四 表头「截至 2026-09-23 重算」→ 2026-09-26 实测(并注明本表由人工同步、机械校验见doc_sync_check.py);数据规模93 直属 = 75+8+4+1+5→100 直属 = 77+10+7+1+5;面板 82 行/78 交易日(06-01→09-22)→ 85 行/80 交易日(06-01→09-25);Regime Trending-Down 0.794、Brier 0.07667(基准 0.12883,n=6);模拟盘 0.985001 / 现金 0.599635(v5.2 空头腿 + 09-24 reduce 50%);保留策略数据/runs/计数 62 → 76(2026-09-26 实测)。- 驾驶舱:§〇·五 复盘分组表 75/8/4/1 → 77/10/7/1,并加「
review_files(95)≠ 100 直属」口径说明;§五 月度表 2026-09 行 → 14/10/7/1、合计 → 77/10/7/1、截止日 → 2026-09-26;§〇 与 §〇·五 脚本表scripts/legacy/7 → 8 个(含 09-19 新增calibrate.py/validate_0918.py)。 框架/使用指南.md:结构树 复盘 93 直属 → 100 直属 + 44 归档 + 2 治理;收盘复盘 75 → 77、快照 8 → 10、简报 4 → 7。- 自检:
moc_index一致(复盘 95 / 归档 44)|arch_check10/10 ✔(md=211 / 出链 746 / 死链 0 / 孤儿 0)|doc_sync_check --strictrc=0。 - 批次 3(代码小修 D1/D2,2026-09-26):D1
scripts/state_digest.py截断改按字段/分隔边界——dict/list 逐个丢弃尾部元素并保留合法 JSON(尾部补…),字符串回退到最近分隔符;实测doc_sync/moc_index字段不再被切成"un。仓库与技能目录副本 md5 一致c7134cd4。D2数据库说明.md保留策略表新增一行「**/__pycache__/:运行时产物,可再生,不参与统计与自检,不反复清理」。技能镜像同步升 v1.7.1(md55ca15c2c)。测试:37/37 按类全绿(Aux 6 / BondLeg 5 / DocSync 4 / Paper 5 / PaperShort 6 / PathGuard 4 / Pattern 4 / RegimeWf 3)+ PipelineSafetyTests 9/10 单测直通、1 项(recompute_failure_blocks_publish)在 iSH 上 importfetch整链被静默 kill,其断言recompute_passed已直接复核等价通过。 - 批次 4(策略与登记 C2/F1/F2/G1,2026-09-26):C2
dkfetch.fetch_econ_calendar窗口口径明确为「滚动 7 自然日回溯 → 当日(工作日)」,新增显式前向开关DK_ECON_FORWARD_DAYS=N(默认 0);已在数据库说明.md§〇·五·一 登记,并规定盘前简报 §六 缺目标日事件一律标[待补]。隔离验证(stub 网络):默认末查日 = 09-25(周六跳过)、DK_ECON_FORWARD_DAYS=3末查日 = 09-29 ✔(测后原文件已还原)。F1 保留策略表新增*.bak*行(13 处,保留不自动清理,收敛须另开任务)。F2数据/logs/(>300 个或 >500 MB)与数据/runs/(>120 个或 >200 MB)补归档触发条件(>30 天者先备份再移入*_archive/)。G1 §〇·五·一 登记外部思路源fixed-income-mcp-main(接口分层)/trace-data-pipeline-main(取数→校验→留痕),只作设计参考、不接入、不 import。 - C3 遗留解决(用户确认追加,2026-09-26):09-25 批次 4 条
type=validation已按既有流程追加(pred_20260925T071912_{band,dir,dxy_dir,10y_tips_dir};先备份predictions.jsonl.bak_pre_append_0925,幂等护栏防重复):band covered_hit(4261.05 ∈ 4206.50–4326.30)、dir direction_hit(−0.13%,evidence 注明幅度落在 ±0.30% 中性带内、方向证据弱)、dxy_dir direction_miss(−0.30%)、10y_tips_dir direction_miss(−0.02pp)。Brier 重算 → 0.07857(基准 0.13609,n=7),latest.json.brier已刷新;台账 58 行。已知口径(不改代码):brier_calibration.pred_to_conf只映射band/direction_withheld的置信度,direction型验证记录不计入 Brier(n=7 ≠ 10 即由此);如需计入需改打分语义,另行评审。 - 红线遵守:未改
框架/数据口径定义.md、未动归档区与已发布复盘、未补/改任何predictions.jsonl、未动dkanalysis.py/update_bond_etf.py/paper_engine.py。 - 批次 2(C1 数据追平,2026-09-26 12:39 运行):
DK_DISABLE_MCAL=1 python3 -u scripts/fetch.py→ run_id20260926T123900+0800,target 由 09-24 推进到 2026-09-25(LBMA 09-25 PM 官方 = 4261.05,本地已追平);G1 / publish / source 全 PASS;面板 85 行 / 81 交易日(06-01→09-25);债券腿 09-25 = TLT 79.32 / AGG 95.12(未复权真实收盘);L0 正常(L0-3 可评估);regime Trending-Down 0.795;regime_wf 81 行末行 09-25。模拟盘 09-25 再执行一次reduce 50%(eq 0.984403 / cash 0.791961,ord_20260926_124132)。pattern:A 由「确认(弱)」回落到「未达门槛(0 日)」(09-25 为美元↓+实际利率↓+黄金↓,不满足 A 条件)。 - 批次 2(C3 预测验证取证,只读):09-25 批次 4 条在
predictions.jsonl中 status 仍为open(口径用词为open非pending;validate_prediction.py未接入管线,不会自动追加 verification 记录)。机械核对结果:band 4206.50–4326.30 含 4261.05 → 覆盖命中;dir=down 方向命中(−0.13%,幅度落在 ±0.30% 中性带内,方向证据偏弱);dxy_dir=up 未命中(100.9843,−0.30%);10y_tips_dir=up 未命中(2.83,−0.02pp)→ 2/4。按 C3 要求未写入任何 verification 记录(红线:不手工补predictions.jsonl),登记遗留待用户决定是否按既有流程追加。 - 批次 2 文档同步:驾驶舱头部/状态行 → 81 交易日、版本 v5.2.2;§〇·五 复盘(101 直属)与快照 11;§五 月度表 09 月 14/11/7/1、合计 77/11/7/1;
数据库说明.md§四 → 面板 85 行/81 交易日、Regime 0.795、Brier 0.07667(基准 0.13609,n=6)、模拟盘 0.984403/0.791961、数据规模 101 直属、数据/runs/77;框架/使用指南.md→ 101 直属 / 快照 11。自检:arch_check10/10 ✔、doc_sync_check --strictrc=0。
- 架构风险审计(纯只读)与 v5.2.3 待办登记(2026-09-26 追加):以【高级架构风险审计官】身份仅读 3 个高层视图(驾驶舱 /
state/current.md/ 最新优化报告)后定向取证,产出 optimization/待办与交接/架构风险审计待办_v5.2.3_2026-09-26(1×P0 + 4×P1 + 5×P2 + 7 项「已验证无风险」+ 4 批次执行纪律)。核心暴露:P0 熔断计数器跨会话单调累积不复位(state_digest.pyloops=max(loops,step),实测loops=13/15,mode变更不重置 → 下一次日常任务第 3 步即假熔断)|P1max_budget死代码(cost_est无写入方,恒 0.0)|P1 预测台账flock(LOCK_EX)无超时/无逃生|P1 旧 SOP每日发布运行提示词_2026-09-23(v5.0.1)与系统脱节 3 版(仍写 9/9 自检、15 项测试)|P1state/current.md零监护(三自检脚本均不解析state/)。审计未改任何文件,仅登记本文件与本行;登记后arch_check/doc_sync_check复跑全绿(§〇·五optimization/计数 27 → 28)。
v5.2.1 二级源回退失效修复 / 债券腿盘中伪收盘拦截(2026-09-26)
主题:修掉两个真实缺陷 —— ① 二级源 VIX 回退在「二级源比目标日更新」时整段失效(导致 L0 假性降级);② 债券腿把美股盘中未完成的当日中间价当收盘并入且永不覆盖。完整报告:v5.2.1 报告。
- P1-1 二级源回退守卫修复(
scripts/dkanalysis.py):旧判定ds[-1] == target在 T+0 延迟报价已含次日点位时失效 → 改为「目标日在序列内」upto[-1] == tkey,前值取upto[-2],来源标签按实际源映射(cboe_csv → CBOE 官方日线 CSV等)。重发后 L0-2 = 正常(single +3.2% / 三日 +5.4%,来源 CBOE 官方日线 CSV),09-23 反推前值[待验证]已被权威源替代 → 该项关闭。 - P1-2 债券腿会话完成判定(
scripts/update_bond_etf.py):新增_is_session_final()/filter_session_final(),美股 16:00 ET 收盘前(保守取 UTC 21:00)的当日日线视为provisional,拒绝并入并写入provisional_dropped;对旧文件同过滤 + 按上轮标记自愈剪除。实测 TLT/AGG 82→81 天,最新恢复2026-09-24(TLT 79.42 / AGG 94.95),面板 09-25 行tlt/agg清空。 - 回归测试 +3 项(
AuxSourceTests×1 /BondLegTests×2);arch_check10/10 ✔、doc_sync_checkrc=0;备份/var/minis/shared/backup/DUCKERRY_pre_auxvixfix_20260925/。
v5.2 二级源消盲区 / 债券真实收盘 / 模拟盘空头腿(2026-09-25)
主题:用二级源消除 L0-2/L0-3 数据盲区;债券腿改未复权真实收盘;模拟盘补 reduce/close 与空头腿;A/B/C 机械证据落地。完整报告:v5.2 报告。
- 二级源消盲区(P1):新增
scripts/fetch_aux_sources.sh/update_aux_sources.py/dkaux.py;产出数据/index_aux.json(东财100.SPX/100.NDX100,与 FRED 重叠 80 日逐日一致)、数据/vix_daily.json(CBOE 延迟报价 T+0 + CBOE CSV / FRED 权威回填,优先级fred > cboe_csv > cboe_delayed > 反推)。 dkanalysis.l0(P,T,target,aux=...)新增二级源回退:仅在权威源缺目标日值时生效并标注来源;fetch.py已接线(--no-aux/DK_SKIP_AUX=1,结果入latest.json.aux_sources)。实测 L0 由「降级」→「正常(L0-3 可评估)」:L0-2 VIX 09-24=15.67(+3.2%,前值 09-23=15.18 由 price_change 反推[待验证]);L0-3 SPX -0.02% / NDX +0.03% / AGG -0.48%。- 债券腿未复权真实收盘(P2):AGG/TLT 原用东财
fqt=1复权价,系统性低估波动;现改用未复权真实收盘(纳指官网 > 东财fqt=0),update_bond_etf.py --from-aux|--rebuild支持重建,数据/bond_xcheck.json交叉验证。09-24 修正:AGG -0.346%→-0.482%、TLT -0.868%→-1.293%;旧复权文件备份*.bak_20260925_fqt1。 - 模拟盘 v5.2(P1):
paper_engine.py新增事前写死规则([待验证]):L0 断路→close全平;持多且 L1 转 down→reduce 50%(受min_hold);持空且 L1 转 up→close_short;空头门槛=L1 down + L0 正常 +verified+ regimeTrending-Down+ 无多头敞口;空头名义 ≤0.5×净值、逆势 3% 止损/顺势 6% 止盈/min_hold3 日;空头名义计入现金保证金;_open_entry改净额推导 + 同日幂等护栏。真实账户 09-24 已执行reduce 50%(cash 0.2145→0.599635,equity 0.985001,残余多头 0.000090)。 - A/B/C 机械证据(P2):新增
scripts/pattern_abc.py→数据/pattern_abc.json+latest.json.pattern;A=确认(弱,2 日)、A 退出历史已触发(07-22)、C 未达门槛(7 日)、B 固定「不可判定」。只做计数与门槛比对,不宣布因果、不升级为规则。 - 测试 29 → 44 项:新增
AuxSourceTests5 /PatternAbcTests4 /PaperShortReduceTests6(全 OK);Agent 侧按类分批跑。 - 技能 v1.7.0 降本重构并同步入库(本日追加):
duckerry-daily-review由 1.6.0 → 1.7.0,新增 §0 成本纪律(成本刺客清单)、§0.2 模型动态路由([Cheap]/[Std]/[Exp])、§0.3 状态外置与上下文剪枝(每 ≤3 步覆盖写state/current.md,之后只读该文件)、§0.4 YAML 硬性熔断(max_loops: 15/max_budget: 0.5/max_no_progress: 3);新增scripts/state_digest.py(--step生成 ≤500 字状态摘要、--guard熔断判定 rc=0/3,只读仓库+只写state/)。仓库内镜像:框架/技能/duckerry-daily-review SKILL(与/var/minis/skills/duckerry-daily-review/SKILL.mdmd5 一致d1873f0e);v1.6.0 全部硬规则(二级源、未复权债券、写入路径、10 项自检)原样保留。 - 红线:未补数/未前值填充/未覆盖权威源;二级源救回均标来源与
[待验证];未覆盖任何历史人工复盘(仅本日--force回填 09-24);模拟盘不接真实账户。备份/var/minis/shared/backup/DUCKERRY_pre_auxsrc_20260925/。
v5.1 路径防呆与导航可达性(2026-09-24)
主题:根治「复盘文件能写入、但从驾驶舱导航页点不到」。完整报告:路径防呆修复报告 v5.1。
- 根因(4 条):① 命名必须精确匹配(少空格/带后缀的文件被静默丢弃);② 只扫
复盘/根目录(子目录文件不可见);③ 同日同类型重复文件互相覆盖且无告警;④moc_index.py靠人记得手动跑。 moc_index.pyv5.1:命名容错(2026-09-24收盘复盘.md等变体也收录)、递归扫描、重名冲突告警、未登记文件告警(仅报"驾驶舱全文都搜不到"的,不误伤已挂链文档);新增--verify <路径>一条命令验证可达性;新增第 5 类🚫 数据缺失占位(占位文件也能直达)。- 新增
scripts/review_write.py(唯一合法写入入口):强制复盘/根目录 + 规范命名,支持类型简写归一(复盘/快照/简报/备忘/占位),已存在默认不覆盖(退出码 2),写入后自动登记 + 校验并打印✔ 导航页可直达。 fetch.py发布后自动登记索引(非阻断):结果写入latest.json.moc_index,日志打印驾驶舱索引: 已更新(复盘 N 份 / 归档 M 份);命名不规范的会直接点出文件名。从此快照不再需要人工登记。arch_check.pyv5.1(10 项):新增 第 10 项「复盘/全部可从驾驶舱直达」(要求驾驶舱本身有链接,而非"全库某处有链接");检查 4 的命名/扫描口径与moc_index对齐。publish_status.sh:新增moc_index:状态行。- 测试 25 → 29 项:新增
PathGuardTests4 项(命名变体收录 / 四类之外不误判 / 未登记告警只报真点不到的 / 规范路径与简写归一),全绿。 - 红线:未改动
数据/、归档区、人工收盘复盘、AUTO:DATA;新脚本只读/只登记/不阻断,不参与 L0–L4 与发布闸门。备份/var/minis/shared/backup/DUCKERRY_pre_pathfix_20260923/(含MD5_BEFORE.txt)。
v5.0.1 状态一致性修复(2026-09-23)
- 修了什么(全部有证据,未动 AUTO 区块 / 未覆盖人工复盘 / 未改任何判据):
- 系统概览「人工收盘复盘待补」→「已补(2026-09-22)」——证据:
复盘/2026-09-22 收盘复盘.md存在(19,030 字节 / 204 行,frontmatter 生成方式=半自动化:真实数据脚本 + Agent结构化复盘),非占位。 - Brier 基准 0.125 → 0.13156(系统概览 + §六,旧值为 v4.2 时代残数字)——证据:
brier_calibration.calibration_report()从predictions.jsonl重算 = Brier 0.074 / baseline 0.1315567 / validated 5;数据/latest.jsonbrier.baseline=0.13156。n=5 真实(5 条 covered_hit band 预测带 confidence)。 - 核心框架表 Agent「方向覆盖0%」→「条件发布/方向覆盖 0%(withheld 不进分母)」——证据:
predictions.jsonl自 09-16 起 gold 方向预测全部direction_withheld(withhold_reason=L1 neutral 无方向许可 + L0 降级风险状态未知),与 §六「风格自适应」口径一致。 - 债券腿行:过时数值「AGG 09-18 -0.38%」→「09-22:AGG -0.11% / TLT -0.30%」+ 单源说明——证据:
数据/bond_agg.json/bond_tlt.json末行(updated_at 2026-09-23T13:05:23 增量合并)。 - 模拟盘「1 交易日累积中」→「3 交易日累积中(09-18/09-21/09-22,样本不足)」——证据:
数据/paper/paper_equity.csv3 行。 - 系统概览新增 L0 降级说明:唯一无法评估项 = L0-2 VIX(数据日 09-21;SPX/NDX 已追平 09-22),等待源发布、禁止前值填充。
- 框架完整性行 v4.0 → v5.0 统一管理版(与 frontmatter / §〇 消除版本自相矛盾);§〇 标题 v4.3 → v5.0。
- 未修什么(真实优先,标签保持原样):
- VIX 数据日保持 2026-09-21:FRED 实测(2026-09-23 10:46 UTC,
curl -s --proxy '' fredgraph.csv?id=VIXCLS | tail -1→2026-09-21,14.87)确认 09-22 未发布;不重跑抓取、不填充;VIX 滞后一日,不用于目标日高置信判据。 - 债券腿保持
single_source待验证:第二源交叉验证尝试全部失败——stooq(Access denied)/ Yahoo query1+query2(Load failed / 挂起)/ WSJ(导航挂起)/ shell curl(HTTPS_PROXY 拒绝)/ 武器库 akshare/efinance/pybondlab/yieldcurve(未装且无 pip 网络,v4.2 实测);一次性抽样不得据此宣称已验证。 - Regime 保持 待验证:验证方法 = walkforward 无前视对比(
数据/regime_daily_wf.csv,76 日,L1+过滤 +4.12% vs L1 +2.26%,Δ+1.86pp)+ Brier 分层,随每日 run 自动延伸;下次人工复核:2026-10-01。 predict_regime_conditional.py:56自然日 +1 生成forecast_date的 P1 缺陷未在本任务修(属代码层,P1 记录见 复盘/2026-09/2026-09-22 收盘复盘 §十);09-19 批次 14 条预测仍无法验证。- Brier n=5 / 模拟盘 3 交易日:样本不足,仅监控,不用于决策;不得手动扩样本。
- 证据命令:
python3 scripts/doc_sync_check.py --strict(0 告警)/python3 scripts/arch_check.py(9/9 PASS)/DK_DISABLE_MCAL=1 python3 tests/test_pipeline.py(22/22 OK)/python3 scripts/fetch.py --probe(11/12 源可达,ust_real.csv curl 瞬时失败但 10y_tips 数据已更新至 09-22verified)。 - 完整报告:状态一致性修复报告 v5.0.1。
v5.0 统一管理版(2026-09-23)
- 驾驶舱 = 全库唯一入口:新增 §〇·五「全库文件地图」(9 分组逐文件链接)+ §七 重构为四层(7.1 最新 / 7.2 全量索引 / 7.3 里程碑 / 7.4 归档区)。驾驶舱可达的复盘类文件 10 → 88(75 复盘 + 8 快照 + 4 简报 + 1 备忘)。
- 新增
scripts/moc_index.py(导航层):扫描复盘/→ 自动重写驾驶舱 AUTO:INDEX 区块(§7.1/7.2),根治"新增复盘零入链";纯只读扫描,不参与任何发布判据。 - 断链 44 → 0 / 孤儿 28 → 0(严格口径:相对当前目录或库根必须真实存在,不加 basename 兜底;代码块内示例不计数)。证据:
optimization/evidence/死链与孤儿清单_2026-09-23.json。 - B3 决策:取消「周汇总层」 ——
06-W4/07-W1/07-W3 汇总从未创建(14 处死链),统一改指全周期总汇并保留别名;图谱导航图写明该层已废弃。 - 分类收敛:治理文档 → 新建
复盘/数据治理/;模板类 → 新建框架/模板/;回测/8 个无语义/旧名文件重命名 + 新增README.md映射表(内容一字未改);数据/删除失效文件清单.json→数据/logs/。 - 索引职责单一化:驾驶舱 = 唯一总入口;
框架/复盘.md降级为「口径说明 + 归档入口」;归档索引保持 44 份冻结区专用。 - 大纲随版本同步(可校验):使用指南(文件结构树重写、logs 位置、自动化现状)/ 图谱导航图(时间线 → 09-22、周汇总层废弃)/ 图谱配置指南(统计改为可复核口径)/ 数据库说明(统计截至 09-23、可信度标签对齐、债券腿数据源行、runs 保留策略)全部更新并加
复核日期: 2026-09-23。 - 版本记录(F):§九 重排为单调倒序,历史条目全部保留(含 v3.1 算术错误勘误)。
- 新增
scripts/arch_check.py:9 项架构自检(死链/孤儿/复盘覆盖/最新日期/三处日期一致/版本序/地图计数/复核日期/归档数),只读只告警、不阻断发布;首跑 9/9 PASS。 - 红线证据:9 个核心脚本与备份 md5 逐字节相同;
框架/数据口径定义.md仅 1 行链接变化;数据/与归档区零删除。 - 完整报告:系统架构优化报告 v5.0(备份 / 回滚 / 判据对照 / 决策理由)。
v4.3 债券腿入管线 + 排版自检(2026-09-23)
- 归入每日流程:债券腿刷新从"手动第 0 步"改为
fetch.py管线内自动步骤(面板构建前),每日发布恢复"一条命令";失败非阻断(--no-bond/DK_SKIP_BOND=1可跳过)。逃生开关与超时(480s)均已实测。 - 排版同步逻辑化:新增
scripts/doc_sync_check.py(9 项跨文件一致性检查),发布后自动执行并把结果写入latest.json.doc_sync;本次即由它抓出"MOC 头部仍写 77 交易日,实际 78"。 - 测试 15 → 22 项全绿:
BondLegTests3 项(失败不阻断 / 跳过开关 / 增量不覆盖旧日期)+DocSyncTests4 项(一致零告警 / 面板行数漂移 / 快照缺失 / L0-3 口径回退)。 - 数据保真:
update_bond_etf.py原样保留源串(不再str(float)重格式化真实数据);L0-3 缺失分支百分比格式化修复。 - 目标日推进:本会话期间 LBMA 发布 09-22 PM fix → target 自动推进 2026-09-22(面板 82 行 / 78 交易日),新快照
复盘/2026-09-22 收盘数据快照.md已生成;L0 因 SPX/NDX/VIX 目标日未发布而正确降级(无填充)。
v4.2 债券腿日更自动化 + 武器库接入(2026-09-23)
- 武器库通道打通:外接
/var/minis/mounts/武器库/7 仓库盘点 + 环境实测——pandas 2.2.3/requests可用,但akshare/efinance/pybondlab/yieldcurve均无 pip 网络装不上(不可作运行时依赖);shellcurl/requests被HTTPS_PROXY拒绝;唯一可用通道 =minis-browser-use fetch。 - 新增
scripts/refresh_bond_etf.sh:一键刷新 TLT(105.TLT)/AGG(107.AGG) 日线 → 增量合并数据/bond_tlt.json/bond_agg.json;封装"秒级文件名互相覆盖"坑位;无新日期记 pending 不补数。 - L0-3 升级为可评估:债券腿数据由 09-18 推进到 09-22,目标日 09-21 AGG +0.26%(真实价格回报),L0-3 状态「可评估(含真实债券价格)」,L0 汇总「正常」(此前为"部分可评估/收益率代理")。
- 发布实测:run_id
20260923T003658+0800/--force重生成20260923T004212,target 2026-09-21,G1/publish/source 全 PASS,面板 82 行 / 77 交易日 / span 06-01→09-22;L1 up(+1.34%,tf_align diverged);Regime Trending-Up 0.785;Brier 0.074(基准 0.12379,n=5);Paper equity 0.995683 / cash 0.214500 / 无 exit;recompute2、recompute4 rc=0。 - 快照同步:
复盘/2026-09-21 收盘数据快照.md用--force重生成(旧版 L0-3 仍写"收益率代理",已过时);--force只重渲染自动快照,不动人工收盘复盘。 - ⚠ 静默 kill 实测:本次第 2 次后台运行在抓完 12 源后被静默终止(日志无
完成:行、latest.json 未更新);加DK_DISABLE_MCAL=1后一次跑通——默认带此开关。 - 交接包:每日发布运行提示词 v4.2(新对话直接粘贴即可跑)。
v4.1 模拟盘风险执行补全(2026-09-22)
- 完整发布跑通(后台 nohup 绕开低内存杀进程):target 2026-09-21,G1/publish/source 全 PASS,12 源 OK,面板 77 交易日。
- 修复模拟盘透支缺陷:连续多日 long 曾把现金买到 -0.485;改为再平衡到目标(
目标=size×净值,加仓=max(0,目标−已持))+ 2% 容差带防 churn。 - 止损/止盈落地:此前
stop_loss/take_profit只记录不执行(3%/6% 风险上限形同虚设)→ 新增check_exits()卖出腿,硬止损优先于 min_hold,止盈受 min_hold 约束,同日幂等。 - 同日重跑统计修正:
daily_return/max_dd/consec_loss不再把被替换的同日旧行当基准。 - 新增回归测试
PaperEngineTests5 项(不透支/再平衡/幂等/止损/止盈受限)全绿,套件合计 15/15。运行交接包:每日发布运行提示词(新对话直接粘贴即可跑发布)。 - 详见 optimization/报告/系统架构优化报告_2026-09-22|报告 §9–§10;备份
数据/paper_bak_pre_cashfix_20260922_123330。
v4.0 架构重排版(2026-09-22)
- 架构重排:新增 §〇 系统架构总览;
regime_hybrid.py抽取共享核心(_l1_signal/_dist_rows/_raw_label/_conf_entropy/walkforward_compare),消除 ~150 行重复逻辑,输出经 old-vs-new 逐字节 diff 验证一致 - 稳定性:模拟盘现金改为从订单文件无状态推导(幂等);测试目标日与"面板末行=交易日"解耦(4 个过时测试修复,10/10 恢复);
DK_DISABLE_MCALkill-switch;日志换行符与 HTML 实体转写错误修复 - 整洁度:7 个一键修复脚本归档至
scripts/legacy/;__pycache__清理;活跃脚本收敛为 14 个 - 债券腿:AGG/TLT 真实价格接入 L0-3(从收益率代理升级);模拟盘归一化净值上线
- 修改前备份:
/var/minis/shared/backup/DUCKERRY_Warehouse_pre_arch_20260922_001450(603 文件)
v3.2 口径统一版(2026-09-09)
- 口径统一:新增 框架/数据口径定义,单位/交易日/序列/验证率/模式判定全部单一来源
- 表格修复:验证明细表 34 行日期列残留
]]全部清除,表头多余空列删除 - 准确率重算:按统一口径应为 79.3%(23/29,截至 08-26);
原页面同时存在 68.4%(13/19)与 80.0%(20/25)两个版本,且 v3.1 声称「19→24、13→18 后仍保持 68.4%」在算术上错误(18/24 = 75.0%),一并废止
- 外推隔离:08-27→09-08 共 13 天标记
extrapolated,移出统计 - 日期对齐:frontmatter / 页首 / 页尾三处更新时间原为 08-26、08-22、08-26 互不一致,统一为 2026-09-09
v3.1 更新版(2026-08-20)
- 复盘补充:新增 08-18 / 08-19 / 08-20 收盘复盘文件并建立链接
- 验证追踪:补充08-17至08-20因子验证记录
- ~~统计调整:验证次数 19→24,已证实 13→18,准确率保持68.4%~~(算术错误:18/24 = 75.0%,非 68.4%,已于 v3.2 废止)
v3.0 美学版(2026-08-19)
- 链接修复:全库失效链接清零,验证表指向真实复盘文件
- 资产建档:新增 美元指数 / 原油 / 债券
- 图谱优化:引入 时间链 + 层级链,重塑关系图谱主干
v2.0 优化版(2026-08-17)
- 新增 Agent系统 / 验证状态表 / 快速查询
v1.0 基础版(2026-06-19)
- 框架搭建 / 因子模型 / 复盘系统上线